#include "../../mylog/header/mylog.h"

void buildLogger()
{
    using namespace mylog;
    // 1.使用日志器建造者，设置日志器属性，建造出日志器
    auto lbd = new UserLoggerBuilder();
    lbd->setFormatter(); //此处使用默认给的格式，你也可以自己指定
    lbd->setLoggerName("Tester");
    lbd->setLoggerType(Logger::Type::SYNC);
    lbd->setMinLevel(Level::Value::DEBUG);
    lbd->setSinker<ColorConsoleSinker>();
    lbd->setSinker<FileSinker>("/home/alonely/logtest/file.log");
    lbd->build();
}

void useLogger()
{
    /// 在你的程序任何位置，通过全局接口获取日志器并使用。
    
    using namespace mylog;
    // 2.通过LoggerName获取日志器对象
    std::string loggerName = "Tester";
    Logger::ptr logger;
    if(haveLogger(loggerName))
        logger = getLogger(loggerName);

    // 3.使用日志器
    logger->dlog("当当当当，这是一条调试信息~好好调试哦，杂鱼~");
    logger->ilog("我没有男朋友，因为我刚满 %d 岁~", 18);
    logger->wlog("报警了啦，警察蜀黍不要抓我~~~");

    logger->setMinLevel(Level::Value::FATAL); // 运行时动态调整最低日志输出等级

    logger->elog("笨蛋！出错了啦，杂鱼~");
    logger->flog("呜呜呜，发生致命错误，都怪你啦笨蛋");
}

int main()
{
    buildLogger();

    useLogger();


    // 4.也可以直接使用默认日志器
    
    // auto logger = mylog::defaultLogger();
    // logger->dlog("当当当当，这是一条调试信息~好好调试哦，杂鱼~❤");
    // logger->ilog("我没有男朋友，因为我刚满 %d 岁~", 18);
    // logger->wlog("报警了啦，警察蜀黍不要抓我~~~");
    // logger->elog("笨蛋！出错啦，杂鱼~");
    // logger->flog("呜呜呜，发生致命错误，都怪你啦笨蛋");
    // logger->dlog("当当当当，这是一条调试信息~好好调试哦，杂鱼~❤");
    // logger->ilog("我没有男朋友，因为我刚满 %d 岁~", 18);

    
    return 0;
}